www.gusucode.com > 最小均方计算工具箱 > 最小均方计算工具箱/LMS+toolbox/LMS toolbox/MVE.m
function [x50,x,TX,CX]=MVE(X) %Syntax: [x50,x,TX,CX]=MVE(X) %____________________________ % % Calculates the Minimum Vulume Ellipsoid (MVE) of a data set X. % % x50 is the 50% of the points that form the MVE. % x is the core subsample for the MVE. % TX is the center of the MVE. % CX is the inflated covariance matrix of the MVE. % X is the matrix of the data set. % % Reference: % Rousseeuw PJ, Leroy AM (1987): Robust regression and outlier detection. Wiley. % % % Alexandros Leontitsis % Institute of Mathematics and Statistics % University of Kent at Canterbury % Canterbury % Kent, CT2 7NF % U.K. % % University e-mail: al10@ukc.ac.uk (until December 2002) % Lifetime e-mail: leoaleq@yahoo.com % Homepage: http://www.geocities.com/CapeCanaveral/Lab/1421 % % Sep 3, 2001. if nargin<1 | isempty(X)==1 error('Not enough input arguments.'); else % X must be 2-dimensional if ndims(X)>2 error('Invalid data set.'); end % n is the length of the data set, p is its dimension [n p]=size(X); end if n<p error('You must give a larger data set.'); end %All the possible combinations of p+1 p-dimensional points C=combnk(1:n,p+1); volmin=Inf; for i=1:size(C,1) for j=1:p+1 A(j,:)=X(C(i,j),:); end if rank(A)==p %Chapter 7, eq. 1.23 Cj=cov(A); %Chapter 7, eq. 1.24 for j=1:n fact(j)=(X(j,:)-mean(A))*inv(Cj)*(X(j,:)-mean(A))'; end mj2=median(fact); mj=sqrt(mj2); % Chapter 7, eq. 1.25 - The objective function vol=sqrt(det(Cj))*mj^(p-1); if vol<volmin volmin=vol; % Chapter 7, eq. 1.26 - MVE TX=mean(A); CX=mj2*Cj/chi2inv(0.5,p); % The core of the MVE x=A; % The 50% of the points contained in the MVE k=0; x50=[]; for j=1:n if fact(j)<=mj2 k=k+1; x50(k,:)=X(j,:); end end end end end